#pragma once
#include "UltimatePhysX3Precompiled.h"
#include "UltimatePhysicsActor.h"


using namespace physx;

class _UltimatePhysX3Export UltimatePhysX3Actor : public UltimatePhysicsActor
{
	PxRigidDynamic* nxActor;
	void * userData;
	bool kinematic;


public:

	virtual void addForce(Ogre::Vector3 force);
	virtual void addTorque(Ogre::Vector3 force);

	virtual void setGlobalPosition(Ogre::Vector3 position);
	virtual Ogre::Vector3 getGlobalPosition();
	virtual void setGlobalOrientation(Ogre::Quaternion orientation);
	virtual Ogre::Quaternion getGlobalOrientation();
	virtual void setUserData(void* userData);
	virtual void* getUserData();
	virtual void setGroup(int i);
	virtual int getGroup();
	virtual void setLookAt(Ogre::Vector3 target);
	virtual Ogre::Vector3 getFacingDir();
	virtual void disableGravity();

	virtual void setPxActor(PxRigidDynamic* actor);
	virtual PxActor* getPxActor();
	virtual void setPose(PxTransform pose);
	virtual void setKinematic(bool isKinematic);

	UltimatePhysX3Actor(void);
	virtual ~UltimatePhysX3Actor(void);
};

